<!-- IOT 弹窗 -->

<template>
  <WebModal path="iot" title="IOT 设备导入" huge>
    <WebForm class="DeviceList-IOTModal" path="iot">
      <el-steps :active="one.step" simple style="margin-top: 20px">
        <el-step :name="1" title="设备选择"><template #icon>1</template></el-step>
        <el-step :name="2" title="批量处理"><template #icon>2</template></el-step>
      </el-steps>

      <FormSlot v-show="one.step === 1" bind="deviceIds" tip="请选择设备" noLabel required>
        <ChooseIOT :obj="one" bind="deviceInfo" checkImport />
      </FormSlot>

      <FormAdd v-if="one.step === 2" />
    </WebForm>

    <template #footer>
      <BtnPrimary v-if="one.step === 1" title="下一步" @click="toNext" />
      <div v-else>
        <BtnPrimary title="上一步" @click="toPrev" />
        <BtnPrimary title="导入" @click="toImport" />
      </div>
    </template>
  </WebModal>
</template>

<script>
// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'

// ============================== 导出组件 ============================== //

export default {
  /**
   * 名称定义 (实际使用名称)
   */
  name: 'IOTModal',

  /**
   * 混入列表 (配置选项合并)
   */
  mixins: [CORE.mixWeb('iot')],

  /**
   * 组件导入 (Abc.vue + Abc/index.vue)
   */
  ...CORE.components(require.context('./', true, /vue$/)),

  /**
   * 监听属性 (深度 deep 首次 immediate)
   */
  watch: {
    /**
     * 监听设备列表
     */
    'one.deviceInfo': {
      immediate: true,
      handler(list = []) {
        this.one.deviceIds = list.map((item) => item.id).join()
      },
    },
  },

  /**
   * 本地方法 (轻量重要在前)
   */
  methods: {
    /**
     * 下一步
     */
    async toNext() {
      await this.refForm.check()
      this.one.step++
    },

    /**
     * 上一步
     */
    toPrev() {
      this.one.step--
    },

    /**
     * 导入
     */
    async toImport() {
      await this.refForm.check()
      this.startAdd()
    },
  },
}
</script>

<style lang="scss">
@import './index.scss';
</style>
